package controller.services.impl.reprodutivo;

import java.io.Serializable;
import java.util.List;

import model.interfaces.DAOFactory;
import model.interfaces.HibernateGenericDAO;
import model.vos.reprodutivo.Reprodutor;

public class ImplReprodutorService implements Serializable{
		/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
		private DAOFactory daoFactory;
		private HibernateGenericDAO<Reprodutor> daoReprodutor;
		private Reprodutor reprodutor;
		
		public Reprodutor getReprodutor() {
			return reprodutor;
		}


		public void setReprodutor(Reprodutor reprodutor) {
			this.reprodutor = reprodutor;
		}


		@SuppressWarnings("unchecked")
		public ImplReprodutorService() {
			this.daoFactory = DAOFactory.getDAOFactory(DAOFactory.HIBERNATE);
			this.reprodutor = new Reprodutor();
		this.daoReprodutor = (HibernateGenericDAO<Reprodutor>) daoFactory
				.getReprodutorDAO();
		}
		
		
		public Reprodutor pesquisarPorId(Serializable id) {
			try {
				Reprodutor r = (Reprodutor) this.daoReprodutor.pesquisarPorId(id);
				return r;
			} finally {
				this.daoFactory.encerrar();
			}

		}

		public List<Reprodutor> listarTodos() {
			try {
				List<Reprodutor> reprodutores = this.daoReprodutor.listarTodos();
				return reprodutores;

			} finally {
				this.daoFactory.encerrar();
			}
		}

		public Reprodutor salvar(Reprodutor reprodutor) {
			this.daoFactory.iniciarTransacao();
			Reprodutor r = (Reprodutor) this.daoReprodutor.salvar(reprodutor);
			this.daoFactory.encerrar();
			return r;
		}

		
		public void excluir(Reprodutor r) {
			this.daoReprodutor.excluir(r);
			this.daoFactory.encerrar();
		}

		
		public void alterar(Reprodutor r) {
			this.daoFactory.iniciarTransacao();
			this.daoReprodutor.alterar(r);
			this.daoFactory.encerrar();

		}

}
